TOP

SQL INSERT INTO SELECT

INSERT INTO SELECT Descriere

Instrucțiunea SQL INSERT INTO SELECT copiază datele dintr-un tabel și le inserează într-un alt tabel.

Instrucțiunea INSERT INTO SELECT necesită ca tipurile de date din tabelele sursă și țintă să se potrivească.


Înregistrările existente în tabelul țintă rămân și nu sunt afectate de procesul de copiere.

INSERT INTO SELECT Sintaxă

Copiază toate coloanele dintr-un tabel în altul:

INSERT INTO table2
SELECT * 
FROM table1
WHERE condition

Copiază doar câteva coloane dintr-un tabel în altul:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition

Baza de date demonstrativă

În acest tutorial vom folosi celebrul exemplu de bază de date „Northwind”.

Mai jos este o mostră din tabelul „Customers” („Clienți”):

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

Și eșantionul din tabelul „Suppliers” („Furnizori”):

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

INSERT INTO SELECT Exemple

Următoarea interogare SQL copie „Suppliers” („Furnizori”) în „Customers” („Clienți”) (coloanele care nu sunt populate cu date vor conține NULL):

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers

O altă versiune a interogării SQL copie datele din tabelul „Furnizori” în „Clienți” (completează toate coloanele):

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country 
FROM Suppliers

Următoarea instrucțiune SQL copie numai furnizorii germani în tabelul Customers:

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers
WHERE Country = 'Germany'